// TODO: part of TDD implementation
// the Date class is not impl yet,
// I just want to make sure the testcases
// should be like this kind
#include <string>
#include <iostream>

class Date
{
public:
    struct Duration
    {
        int years;
        int months;
        int days;
        Duration(int y, int m, int d)
            : years(y), months(m), days(d) {}
    };

    Date();
    Date(int y, int m, int d);
    Date(const std::string &);
    int getYear() const;
    int getMonth() const;
    int getDay() const;

    std::string toString() const;

    friend bool operator<(const Date &, const Date &);
    friend bool operator>(const Date &, const Date &);
    friend bool operator>=(const Date &, const Date &);
    friend bool operator<=(const Date &, const Date &);
    friend bool operator==(const Date &, const Date &);
    friend bool operator!=(const Date &, const Date &);
    friend Duration duration(const Date &, const Date &);
};

using namespace std;

int npass = 0, nfail = 0;
#define test(x)  \
    if (x)       \
        npass++; \
    else         \
        nfail++;
int main()
{
    Date myday(1951, 10, 1);
    test(myday.getYear() == 1951);
    test(myday.getMonth() == 10);
    test(myday.getDay() == 1);
    cout << "Passed: " << npass << ", Failed: " << nfail << endl;
}